package com.proyecto.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.proyecto.modelo.Usuario;


/**
 * Clase que implementa los metodos de la interfaz UsuarioDao. 
 * Utilizada para generar consultas a la DB.
 * Extiende {@link SpringHibernateDao}
 * 
 */
@Repository
public class UsuarioDaoImpl extends SpringHibernateDao<Usuario> implements UsuarioDao

{
	/**
	 * @param sessionFactory Objeto para abrir una sesion a la DB.
	 * Constructor de la clase.
	 */
	@Autowired
	public UsuarioDaoImpl(SessionFactory sessionFactory) {
		super(sessionFactory);

	}

	
	/* (non-Javadoc)
	 * @see org.cimientos.intranet.dao.base.SpringHibernateDao#getObjetoManejado()
	 */
	@Override
	protected Class<Usuario> getObjetoManejado() {
			return Usuario.class;
	}


	/* (non-Javadoc)
	 * @see com.proyecto.dao.UsuarioDao#obtenerUsuario(java.lang.String, java.lang.String)
	 */
	@Override
	public Usuario obtenerUsuario(String username, String password) {
		DetachedCriteria criteria = DetachedCriteria.forClass(Usuario.class);
		criteria.add(Restrictions.eq("nombre", username));
		criteria.add(Restrictions.eq("password", password));
		List<Usuario> encontrados = getHibernateTemplate().findByCriteria(
				criteria);
		if(encontrados.size()>0){
			return encontrados.get(0);
		}else{
			return null;
		}
	}



}
